package com.ship.dispatch.model.dto.shipReport;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ship.common.core.mapping.Label;
import com.ship.common.core.mapping.SearchItem;
import com.ship.common.core.mapping.TableColumn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Data
public class ShipReportDto {
    private Long id;

    /**
     * LNG consumption for
     */
    @ApiModelProperty(value = "LNG consumption for")
    private String lngConsumptionType;

    /**
     * callsign
     */
    @ApiModelProperty(value = "callsign")
    private String callsign;

    /**
     * flag
     */
    @ApiModelProperty(value = "flag")
    private String flag;

    /**
     * 船舶名称
     */
    @ApiModelProperty(value = "船舶名称")
    private String vesselName;

    /**
     * 航次号
     */
    @ApiModelProperty(value = "航次号")
    private String voyageNumber;

    /**
     * 日期
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy/MM/dd")
    @ApiModelProperty(value = "日期")
    private Date shipReportDate;

    /**
     * 本地时间
     */
    @ApiModelProperty(value = "本地时间")
    private String shipReportLt;

    /**
     * UTC 时间
     */
    @ApiModelProperty(value = "UTC 时间")
    private String shipReportUtc;

    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    private String positionLat;

    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    private String positionLong;

    /**
     * Observed distance since last report（N.Miles）
     */
    @ApiModelProperty(value = "Observed distance since last report（N.Miles）")
    private Integer lastReportMiles;

    /**
     * Steaming Time since last report
     */
    @ApiModelProperty(value = "Steaming Time since last report")
    private String steamingTime;

    /**
     * Total distance since FAOP（N.Miles）
     */
    @ApiModelProperty(value = "Total distance since FAOP（N.Miles）")
    private Integer faopMiles;

    /**
     * Distance to go - To Next Port（N.Miles）
     */
    @ApiModelProperty(value = "Distance to go - To Next Port（N.Miles）")
    private String nextPortMiles;

    /**
     * Distance to go - To Final destination（N.Miles）
     */
    @ApiModelProperty(value = "Distance to go - To Final destination（N.Miles）")
    private String finalDestinationMiles;

    /**
     * Average speed since last report（Knots）
     */
    @ApiModelProperty(value = "Average speed since last report（Knots）")
    private BigDecimal lastReportKnots;

    /**
     * Speed required to make scheduled ETA（Knots）
     */
    @ApiModelProperty(value = "Speed required to make scheduled ETA（Knots）")
    private String scheduledEtaKnots;

    /**
     * Engine RPM since last noon report（RPM）
     */
    @ApiModelProperty(value = "Engine RPM since last noon report（RPM）")
    private BigDecimal engineRpm;

    /**
     * Engine power（KW）
     */
    @ApiModelProperty(value = "Engine power（KW）")
    private Integer enginePowerKw;

    /**
     * Engine torque（KN-m）
     */
    @ApiModelProperty(value = "Engine torque（KN-m）")
    private Integer engineTorqueKn;

    /**
     * Pct. Slip
     */
    @ApiModelProperty(value = "Pct. Slip")
    private BigDecimal pctSlip;

    /**
     * Consumption since last report - F.O.（tonnes）
     */
    @ApiModelProperty(value = "Consumption since last report - F.O.（tonnes）")
    private Integer consumptionFo;

    /**
     * Consumption since last report-L. S. F. O.（tonnes）
     */
    @ApiModelProperty(value = "Consumption since last report-L. S. F. O.（tonnes）")
    private Integer consumptionLsfo;

    /**
     * Consumption since last report-L.S.M.D.O（tonnes）
     */
    @ApiModelProperty(value = "Consumption since last report-L.S.M.D.O（tonnes）")
    private BigDecimal consumptionLsmdo;

    /**
     * Consumption since last report- G.O.（tonnes）
     */
    @ApiModelProperty(value = "Consumption since last report- G.O.（tonnes）")
    private Integer consumptionGo;

    /**
     * Consumption since last report-L.S.G.O.（tonnes）
     */
    @ApiModelProperty(value = "Consumption since last report-L.S.G.O.（tonnes）")
    private BigDecimal consumptionLsgo;

    /**
     * Remaining on board - F.O.（tonnes）
     */
    @ApiModelProperty(value = "Remaining on board - F.O.（tonnes）")
    private Integer remainingFo;

    /**
     * Remaining on board-L. S. F. O.（tonnes）
     */
    @ApiModelProperty(value = "Remaining on board-L. S. F. O.（tonnes）")
    private BigDecimal remainingLsfo;

    /**
     * Remaining on board-L.S.M.D.O.（tonnes）
     */
    @ApiModelProperty(value = "Remaining on board-L.S.M.D.O.（tonnes）")
    private BigDecimal remainingLsmdo;

    /**
     * Remaining on board- G.O.（tonnes）
     */
    @ApiModelProperty(value = "Remaining on board- G.O.（tonnes）")
    private Integer remainingGo;

    /**
     * Remaining on board-L.S.G.O.（tonnes）
     */
    @ApiModelProperty(value = "Remaining on board-L.S.G.O.（tonnes）")
    private BigDecimal remainingLsgo;

    /**
     * Remaining on board-LNG（m3）
     */
    @ApiModelProperty(value = "Remaining on board-LNG（m3）")
    private BigDecimal remainingLng;

    /**
     * LNG consumption since last report (by flowmeter)（m3）
     */
    @ApiModelProperty(value = "LNG consumption since last report (by flowmeter)（m3）")
    private BigDecimal consumptionFlowmeter;

    /**
     * LNG consumption for
     */
    @ApiModelProperty(value = "LNG consumption for")
    private String lngConsumptionFor;

    /**
     * Fuel oil equivalent factor
     */
    @ApiModelProperty(value = "Fuel oil equivalent factor")
    private BigDecimal fuelOilFactor;

    /**
     * LNG fuel equivalent（tonnes）
     */
    @ApiModelProperty(value = "LNG fuel equivalent（tonnes）")
    private BigDecimal lngFuelEquivalent;

    /**
     * Total F.O. consumption since FAOP（tonnes）
     */
    @ApiModelProperty(value = "Total F.O. consumption since FAOP（tonnes）")
    private BigDecimal totalFoFaop;

    /**
     * Wind - Direction
     */
    @ApiModelProperty(value = "Wind - Direction")
    private String windDirection;

    /**
     * Wind - Force (Beaufort)
     */
    @ApiModelProperty(value = "Wind - Force (Beaufort)")
    private Integer windForce;

    /**
     * Sea state
     */
    @ApiModelProperty(value = "sea_state")
    private Integer seaState;

    /**
     * Seawater Temp (°C)
     */
    @ApiModelProperty(value = "Seawater Temp (°C)")
    private Integer seawaterTemp;

    /**
     * Duration of weather > Beaufort 5
     */
    @ApiModelProperty(value = "Duration of weather > Beaufort 5")
    private String durationWeather;

    /**
     * Distance steamed in weather > Beaufort 5（N.Miles）
     */
    @ApiModelProperty(value = "Distance steamed in weather > Beaufort 5（N.Miles）")
    private BigDecimal distanceSteamWeather;

    /**
     * Fuel consumed in weather > Beaufort 5（tonnes）
     */
    @ApiModelProperty(value = "Fuel consumed in weather > Beaufort 5（tonnes）")
    private BigDecimal fuelConsumeWeather;

    /**
     * Average LNG temp.- Tank # 1（Deg. C）
     */
    @ApiModelProperty(value = "Average LNG temp.- Tank # 1（Deg. C）")
    private String averageLngTank;

    /**
     * Average LNG temp.- Tank # 2（Deg. C）
     */
    @ApiModelProperty(value = "Average LNG temp.- Tank # 2（Deg. C）")
    private BigDecimal averageLngTankDeg;

    /**
     * Average LNG temp.-Tank # 3（Deg. C）
     */
    @ApiModelProperty(value = "Average LNG temp.-Tank # 3（Deg. C）")
    private BigDecimal averageLngTankDegc;

    /**
     * Average LNG temp.-Tank # 4（Deg. C）
     */
    @ApiModelProperty(value = "Average LNG temp.-Tank # 4（Deg. C）")
    private BigDecimal averageLngTankDec;

    /**
     * Average cargo tank pressure - Tank # 1（kPa）
     */
    @ApiModelProperty(value = "Average cargo tank pressure - Tank # 1（kPa）")
    private BigDecimal averageCargoPre;

    /**
     * Average cargo tank pressure - Tank # 2（kPa）
     */
    @ApiModelProperty(value = "Average cargo tank pressure - Tank # 2（kPa）")
    private BigDecimal averageCargoPres;

    /**
     * Average cargo tank pressure - Tank # 3（kPa）
     */
    @ApiModelProperty(value = "Average cargo tank pressure - Tank # 3（kPa）")
    private BigDecimal averageCargoPress;

    /**
     * Average cargo tank pressure - Tank # 4（kPa）
     */
    @ApiModelProperty(value = "Average cargo tank pressure - Tank # 4（kPa）")
    private BigDecimal averageCargoPressure;

    /**
     * LNG ROB - Tank # 1(BY CTMS DATA)（m3）
     */
    @ApiModelProperty(value = "LNG ROB - Tank # 1(BY CTMS DATA)（m3）")
    private BigDecimal lngRobTa;

    /**
     * LNG ROB -Tank # 2 (BY CTMS DATA)（m3）
     */
    @ApiModelProperty(value = "LNG ROB -Tank # 2 (BY CTMS DATA)（m3）")
    private String lngRobTan;

    /**
     * LNG ROB -Tank # 3 (BY CTMS DATA)（m3）
     */
    @ApiModelProperty(value = "LNG ROB -Tank # 3 (BY CTMS DATA)（m3）")
    private BigDecimal lngRobTank;

    /**
     * LNG ROB -Tank # 4 (BY CTMS DATA)（m3）
     */
    @ApiModelProperty(value = "LNG ROB -Tank # 4 (BY CTMS DATA)（m3）")
    private BigDecimal lngRobCtms;

    /**
     * ETA NEXT PORT - Date/Time(LT)
     */
    @ApiModelProperty(value = "ETA NEXT PORT - Date/Time(LT)")
    private String etaNextPort;

    /**
     * Deviations
     */
    @ApiModelProperty(value = "Deviations")
    private String deviations;

    /**
     * Physical condition of all crew onboard
     */
    @ApiModelProperty(value = "Physical condition of all crew onboard")
    private String physicalConditionCrew;

    /**
     * LNG consumption for M/G（m3）
     */
    @ApiModelProperty(value = "LNG consumption for M/G（m3）")
    private BigDecimal lngMg;

    /**
     * LNG consumption for D/G（m3）
     */
    @ApiModelProperty(value = "LNG consumption for D/G（m3）")
    private BigDecimal lngDg;

    /**
     * LNG consumption for GCU（m3）
     */
    @ApiModelProperty(value = "LNG consumption for GCU（m3）")
    private BigDecimal lngGcu;

    /**
     * BOG reliquefied by reliquefaction system（m3）
     */
    @ApiModelProperty(value = "BOG reliquefied by reliquefaction system（m3）")
    private BigDecimal bogReliquefie;

    /**
     * Remarks
     */
    @ApiModelProperty(value = "Remarks")
    private String remarks;

    /**
     * 船舶IMO
     */
    @ApiModelProperty(value = "船舶IMO")
    private String imo;
}
